/*
 * GraphInt.h
 *
 *  Created on: 21/01/2012
 *      Author: marcio
 */

#ifndef GRAPHINT_H_
#define GRAPHINT_H_

typedef struct{
	int n;
	int m;
	void* edges;
}GraphInt;

GraphInt* graph_newGraph(int n);

GraphInt* graphint_readGraph(FILE* filegraph);

GraphInt* graphint_complement(GraphInt* g);

GraphInt* graphint_homophism(GraphInt* g);

int graphint_addEdge(GraphInt* g, int v, int u);

int graphint_deleteEdge(GraphInt* g, int v, int u);

int graphint_hasEdge(GraphInt* g, int v, int u);

int graphint_degree(GraphInt* g, int v);

int* graphint_getNeigboorhood(GraphInt* g, int v);

int* graphint_getAntiNeigboorhood(GraphInt* g, int v);

int* graph_getCommunNeigboorhood(Graph* g, void** nodes, int r);

int* graph_getCommumAntiNeigboorhood(Graph* g, void** nodes, int r);

int* graph_getTotalNeigboorhood(Graph* g, int* nodes, int r);

int* graph_getTotalAntiNeigboorhood(Graph* g, int* nodes, int r);

void graphint_breathFirstSeacrh(GraphInt* g, int v, void (*action)(int));

void graphint_deepFirstSeacrh(GraphInt* g, int v, void (*action)(int));

void graphint_breathFirstList(GraphInt* g, int v);

void graphint_deepFirstList(GraphInt* g, int v);

int* graphint_getNodes(GraphInt* g);

#endif /* GRAPHINT_H_ */
